const store = window.localStorage

const uuid = require('uuid/v4')
const LocalStore = {
    getCustomizedCofig() {
        return JSON.parse(store.getItem('customizedCofig'))
    },
    setCustomizedCofig(obj) {
        store.setItem('customizedCofig', JSON.stringify(obj))
    },
    getCustomizedCover() {
        return JSON.parse(store.getItem('customizedCover'))
    },
    setCustomizedCover(obj) {
        store.setItem('customizedCover', JSON.stringify(obj))
    },
    getEditorConfig() {
        return JSON.parse(store.getItem('editorConfig'))
    },
    setEditorConfig(obj) {
        store.setItem('editorConfig', JSON.stringify(obj))
    },

    getPersonInfo: function () {
        let cfg = JSON.parse(store.getItem('personInfo'))
        return cfg
    },
    setPersonInfo: function (v) {
        let cfg = {...JSON.parse(store.getItem('personInfo')), ...v}
        store.setItem('personInfo', JSON.stringify(cfg))
    },
    getRecentFiles: function () {
        let cfg = JSON.parse(store.getItem('recentFiles'))
        return cfg
    },
    setRecentFiles: function (v) {
        let recentFiles = JSON.parse(store.getItem('recentFiles'))
        if (recentFiles) {
            let temp = recentFiles.filter((x) => {
                return !(x.path === v.path)
            })
            temp.unshift(v)
            store.setItem('recentFiles', JSON.stringify(temp))
        } else {
            store.setItem('recentFiles', JSON.stringify([v]))
            // let cfg = JSON.parse(store.getItem('recentFiles'))
        }
    },
    getRegInfo: function () {
        let cfg = JSON.parse(store.getItem('regInfo'))
        return cfg
    },
    setRegInfo: function (v) {
        store.setItem('regInfo', JSON.stringify(v))
    },

    getSetupInfo: function () {
        let cfg = JSON.parse(store.getItem('setupInfo'))
        return cfg
    },
    setSetupInfo: function (v) {
        store.setItem('setupInfo', JSON.stringify(v))
    },

    saveUserInfo: function (v) {
        store.setItem('userInfo', JSON.stringify(v))
    },

    removeInfo: function (v) {
        let recentFiles = JSON.parse(store.getItem('recentFiles'))
        for (let i in recentFiles) {
            if (recentFiles[i].path === v.path) {
                recentFiles.splice(i, 1)
                break
            }
        }
        store.setItem('recentFiles', JSON.stringify(recentFiles))
        return recentFiles
    },
    // 保存最近登陆
    saveRecentlyUser: function (v) {
        store.setItem('recentlyUser', JSON.stringify(v))
    },
    getRecentlyUser: function () {
        return JSON.parse(store.getItem('recentlyUser'))
    },
    // 获取机器码
    getMachineCode: function () {
        return store.getItem('machineCode')
    },
    // 设置机器码
    setMachineCode: function (v) {
        store.setItem('machineCode', v)
    },
    // 保存模板
    saveTemplate: function (v, name) {
        let templateData = JSON.parse(store.getItem('templateData'))
        if (!templateData) {
            templateData = [{name: name, id: uuid(), data: v, default: false, inlay: false}]
        } else {
            templateData.push({name: name, id: uuid(), data: v, default: false, inlay: false})
        }
        console.log('templateData', templateData)
        store.setItem('templateData', JSON.stringify(templateData))
    },
    // 获取自定义模板
    getTemplateData: function () {
        return JSON.parse(store.getItem('templateData'))
    },
    // 删除模板
    removeTemplate(data) {
        let templateData = JSON.parse(store.getItem('templateData'))
        templateData.splice(templateData.findIndex((x) => {
            return x.name === data.name
        }), 1)
        store.setItem('templateData', JSON.stringify(templateData))
    },
    // 设置默认
    setDefault(data) {
        let templateData = JSON.parse(store.getItem('templateData'))
        let index = templateData.findIndex((x) => {
            return x.default === true
        })
        if (index !== -1) {
            templateData[index].default = false
        }
        if (!data.inlay) {
            templateData.splice(templateData.findIndex((x) => {
                return x.name === data.name
            }), 1)
            data.default = true
            templateData.unshift(data)
        }
        store.setItem('templateData', JSON.stringify(templateData))
    },
    getFeedUrl() {
        return store.getItem('updateUrl')
    },
    setFeedUrl(v) {
        store.setItem('updateUrl', v)
    }
}
export default {
    LocalStore: LocalStore
}
